From: Jonas Dreßler Date: Thu, 24 Feb 2022 18:35:06 +0000 (+0100) Subject: status/bluetooth: Clear list of connected signals on adapter changes X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~516^2^2~40 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=eeabdd150c70ff003a5cca60039ec8f2c4e5dbd0;p=gnome-shell.git status/bluetooth: Clear list of connected signals on adapter changes With the porting of gnome-bluetooth to the new GListModel API the behavior regarding removing adapters changed: It now no longer guarantees to emit "device-removed" signals for the paired devices when the adapter gets removed. This means we need to do that ourselves now, so clear the list of connected signals when the default adapter changes. Part-of: --- diff --git a/js/ui/status/bluetooth.js b/js/ui/status/bluetooth.js index 187e10635..5e985dd1a 100644 --- a/js/ui/status/bluetooth.js +++ b/js/ui/status/bluetooth.js @@ -27,6 +27,17 @@ class Indicator extends PanelMenu.SystemIndicator { this._hadSetupDevices = global.settings.get_boolean(HAD_BLUETOOTH_DEVICES_SETUP); this._client = new GnomeBluetooth.Client(); + this._client.connect('notify::default-adapter', () => { + const newAdapter = this._client.default_adapter ?? null; + + if (newAdapter && this._adapter) + this._setHadSetupDevices(this._getDeviceInfos().length > 0); + + this._adapter = newAdapter; + + this._deviceNotifyConnected.clear(); + this._sync(); + }); this._client.connect('notify::default-adapter-powered', this._sync.bind(this)); this._proxy = new RfkillManagerProxy(Gio.DBus.session, BUS_NAME, OBJECT_PATH, @@ -133,10 +144,6 @@ class Indicator extends PanelMenu.SystemIndicator { const connectedDevices = devices.filter(dev => dev.connected); const nConnectedDevices = connectedDevices.length; - if (this._client.default_adapter && this._adapter) - this._setHadSetupDevices(devices.length > 0); - this._adapter = this._client.default_adapter ?? null; - let sensitive = !Main.sessionMode.isLocked && !Main.sessionMode.isGreeter; this.menu.setSensitive(sensitive);